/*
 * ====================================================================
 *
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
 */

package org.apache.http.examples.client;

import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

/**
 * HttpClient execute an HTTP request over SSL tunneled through an authenticating proxy.
 * 
 */
public class ClientProxyAuthentication {

	public static void main(String[] args) throws Exception {

		DefaultHttpClient httpclient = new DefaultHttpClient();

		try {

			httpclient.getCredentialsProvider().setCredentials(new AuthScope("http.internetpsa.inetpsa.com", 80),
					new UsernamePasswordCredentials("u336654", "agdm7930"));

			HttpHost targetHost = new HttpHost("secure.ogone.com", 443, "https");
			HttpHost proxy = new HttpHost("http.internetpsa.inetpsa.com", 80);

			httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);

			HttpGet httpget = new HttpGet("/ncol/test/querydirect.asp");

			// System.out.println("executing request: " + httpget.getRequestLine());
			// System.out.println("via proxy: " + proxy);
			// System.out.println("to target: " + targetHost);

			HttpResponse response = httpclient.execute(targetHost, httpget);
			HttpEntity entity = response.getEntity();

			System.out.println(response.getStatusLine());

			if (entity != null) {
				System.out.println("Response content length: " + entity.getContentLength());
			}

			// EntityUtils.consume(entity); ???

			// Header[] headers = response.getAllHeaders();
			// for (int i = 0; i < headers.length; i++) {
			// System.out.println(headers[i]);
			// }

			if (entity != null) {
				System.out.println(EntityUtils.toString(entity));
			}

		} finally {
			httpclient.getConnectionManager().shutdown();
		}
	}
}
